<!DOCTYPE html>
<html data-nav-highlight-class-name="highlight-global-nav-home">
  <head>
    
    <title>Twitter</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8" />

  <meta name="description" content="Instantly connect to what's most important to you. Follow your friends, experts, favorite celebrities, and breaking news." />



  <link rel="dns-prefetch" href="http://a0.twimg.com"/>

  <link rel="dns-prefetch" href="http://a1.twimg.com"/>

  <link rel="dns-prefetch" href="http://a2.twimg.com"/>

  <link rel="dns-prefetch" href="http://a3.twimg.com"/>

  <link rel="dns-prefetch" href="http://api.twitter.com"/>


<script type="text/javascript" charset="utf-8">
  
  
  document.domain = 'twitter.com';

  // this will be copied to twttr.appStartTime once our JS has started up
  document.startTime = new Date().getTime();
  var twttr = {};
  twttr.versionName = 'phoenix';
  
  twttr.didPingKeynote = false;
  twttr.keynoteTTFTPing = function() {
    if (!twttr.didPingKeynote && window.location.href.indexOf('keynoteTest') > 0) {
      var image = document.createElement('img');
      image.src = '/images/keynote.gif';
      twttr.didPingKeynote = true;
    }
  }

  if(!window.console){(function(){var B=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var A=0;A<B.length;++A){window.console[B[A]]=function(){}}}())};
</script>



<script type="text/javascript">(function(){window.setTimeout=window.setTimeout;window.setInterval=window.setInterval;window.WATCH=function(label,block){if(typeof block==="undefined"){block=label;label=undefined}if(typeof label==="string"){WATCH._didExecute[label]=true}WATCH._attempt(this,block)};WATCH._didExecute={};WATCH._reportCount=0;WATCH._reportLimit=25;WATCH._reportInterval=60*1000;WATCH._active=false;WATCH.activate=function(setting){if(typeof setting==="undefined"){setting=true}WATCH._active=setting;extend(WATCH,WATCH._active?WATCH.actives:WATCH.inactives)};WATCH.actives={};WATCH.inactives={};var extend=function(destination,source){for(var key in source){destination[key]=source[key]}};var noop=function(){};WATCH._attempt=function(that,block){if(arguments.length<2){block=that;that=window}if(WATCH._active){try{block.apply(that)}catch(error){WATCH._triggerError(error)}}else{block.apply(that)}};WATCH.inactives.end=noop;WATCH.actives.end=function(label){if(typeof label==="undefined"){throw new Error("WATCH.end() requires a label")}if(WATCH._didExecute[label]){WATCH._didExecute[label]=false}else{if(WATCH._active){WATCH._triggerError(new Error('WATCH.end("'+label+'") called without successful call to WATCH("'+label+'", fn(){...}) - a SyntaxError probably just happened'))}}WATCH._didExecute[label]=false};WATCH.inactives.callback=function(that,callback){return typeof callback==="undefined"?that:callback};WATCH.actives.callback=function(that,callback){if(arguments.length===1){callback=that;that=this}if(typeof callback==="string"){callback=(function(stringVersion){return function(){eval(stringVersion)}}(callback))}var watchedCallback=function(){var that=this,args=arguments,result;WATCH._attempt(function(){result=callback.apply(that,args)});return result};watchedCallback.isWatched=true;return watchedCallback};WATCH._onErrorCallbacks={};WATCH.inactives._addOnError=noop;WATCH.actives._addOnError=function(callback){var unique=WATCH._unique();WATCH._onErrorCallbacks[unique]=callback;return unique};WATCH.inactives._removeOnError=noop;WATCH.actives._removeOnError=function(id){delete WATCH._onErrorCallbacks[id]};WATCH._lastUnique=-1;WATCH._unique=function(){return ++WATCH._lastUnique};WATCH.inactives.jQuery=noop;WATCH.actives.jQuery=function(){WATCH._originalJQueryEventAdd=WATCH._originalJQueryEventAdd||jQuery.event.add;jQuery.event.add=function(){var newArgs=Array.prototype.slice.call(arguments);if(typeof newArgs[2]==="function"){newArgs[2]=WATCH.callback(newArgs[2])}else{if(newArgs&&typeof newArgs[2]==="object"&&newArgs[2].handler){newArgs[2].handler=WATCH.callback(newArgs[2].handler)}}return WATCH._originalJQueryEventAdd.apply(this,newArgs)};WATCH._originalJQueryAjax=WATCH._originalJQueryAjax||jQuery.ajax;jQuery.ajax=function(options){jQuery.each(["complete","error","success"],function(which,key){if(!options[key]){return }options[key]=WATCH.callback(options[key])});return WATCH._originalJQueryAjax.apply(this,arguments)}};WATCH.inactives.undoJQuery=noop;WATCH.actives.undoJQuery=function(){jQuery.event.add=WATCH._originalJQueryEventAdd;jQuery.ajax=WATCH._originalJQueryAjax};WATCH._previousErrors={};var escapeDoubleQuotes=function(string){return string.toString().replace('"','\\"')};var stringifyLite=function(object){var result="{",hasProperty=false;for(var key in object){if(typeof object[key]==="undefined"||object[key]===null){continue}result+=(hasProperty?',"':'"')+escapeDoubleQuotes(key)+'":"'+escapeDoubleQuotes(object[key])+'"';hasProperty=true}return result+"}"};WATCH._scribeError=function(report){if(WATCH._previousErrors[report.error]&&(new Date())-WATCH._previousErrors[report.error]<WATCH._reportInterval){return false}if(WATCH.reportLimit<=WATCH.reportCount){return }WATCH.reportCount++;if(!document.location.hostname.match(/(^(www|api)\.)?twitter\.com$/)){return }WATCH._previousErrors[report.error]=new Date();report.product_name="webclient";report.type="js_error";report.url=window.location.href;report.event_name="test";var isProduction=document.location.hostname.match(/(^(www|api|staging\d+.local)\.)twitter\.com$/)!=null;var scribeHost=isProduction?"scribe.twitter.com":window.location.host;var scribeUrl=(window.location.protocol.match(/s\:$/)?"https":"http")+"://"+scribeHost;scribeUrl+=isProduction?"/":"/scribe";scribeUrl+="?category=client_watch_error&log="+encodeURIComponent(stringifyLite(report))+"&ts="+(new Date()).getTime();(new Image()).src=scribeUrl};WATCH._triggerError=function(error){var reraise=true;var report={error:error};for(var key in WATCH._onErrorCallbacks){try{if(WATCH._onErrorCallbacks[key](report)===false){reraise=false}}catch(callbackError){report.callbackFailure=true}}WATCH._scribeError(report);if(reraise){throw error}};WATCH.inactives.natives=noop;WATCH.actives.natives=function(){window.setInterval=WATCH._watchedSetInterval;window.setTimeout=WATCH._watchedSetTimeout};WATCH.inactives.undoNatives=noop;WATCH.actives.undoNatives=function(){window.setInterval=WATCH._originalSetInterval;window.setTimeout=WATCH._originalSetTimeout};WATCH._originalSetInterval=window.setInterval;WATCH._originalSetTimeout=window.setTimeout;WATCH._watchedSetInterval=function(callback,timeout){var setInterval=WATCH._originalSetInterval;return setInterval(WATCH.callback(callback),timeout)};WATCH._watchedSetTimeout=function(callback,timeout){var setTimeout=WATCH._originalSetTimeout;return setTimeout(WATCH.callback(callback),timeout)};WATCH.activate(false)}());</script>
<script type="text/javascript">
  
</script>



  <script>
function bust () {
  document.write = "";
  window.top.location = window.self.location;
  setTimeout(function() {
    document.body.innerHTML = '';
    }, 0);
  window.self.onload = function(evt) {
    document.body.innerHTML = '';
  };
}
if (window.top !== window.self) { // are you trying to put self in an iframe?
  try {
    if (window.top.location.host) { // this is illegal to access unless you share a non-spoofable document domain
      // fun times
    } else {
      bust(); // chrome executes this
    }
  } catch (ex) {
    bust(); // everyone executes this
  }
}
</script>






  <link href="/phoenix/favicon.ico" rel="shortcut icon" type="image/x-icon" />


<base href="http://twitter.com" />


    
    
      
      
        <link rel="stylesheet" href="http://a2.twimg.com/a/1322681100/phoenix/css/phoenix_core_logged_out.bundle.css" type="text/css" media="screen" />
      

      
        
        <link rel="canonical" href="http://twitter.com/" />
      

      
        <noscript>
          
            <meta http-equiv=refresh content="0; URL=/?_twitter_noscript=1" />
          
        </noscript>
      
    

    

    
      <script>(function(){var A=document.getElementsByTagName("html")[0];var B=window.location.hash.split("?")[0];var C=B.match(/#/)&&(B.replace(/#[!]?[\/]?/,"")!=="");if(C){A.className+=" remove-prerendered-content"}else{A.className+=" use-prerendered-content";if(A.getAttribute("data-nav-highlight-class-name")){A.className+=" "+A.getAttribute("data-nav-highlight-class-name")}}})();</script>
    

    
      <link rel="stylesheet" href="http://a0.twimg.com/a/1322681100/phoenix/css/phoenix_more.bundle.css" type="text/css" media="screen" />
    

    <script>var _gaq=_gaq||[];_gaq.push(["_setAccount","UA-30775-6"],["_trackPageview"],["_setDomainName","twitter.com"]);twttr.didInsertGA=false;twttr.insertGAScriptElement=function(){if(!twttr.didInsertGA){var A=document.getElementsByTagName("script")[0],B=document.createElement("script");B.async=true;B.src=(document.location.protocol=="https:"?"https://ssl":"http://www")+".google-analytics.com/ga.js";A.parentNode.insertBefore(B,A);twttr.didInsertGA=true}};twttr.trackPageView=function(A){var B=["_trackPageview"];if(A){B.push(A)}_gaq.push(B)};</script>
  </head>


  <body class="user-style-twttr      logged-out ">
    <div id="doc">
      <div id="top-stuff" class="js-topbar">
        <div id="banners" class="js-banners" style="clear:both;">
          
          
          <div class="banner-outer" id="slow-load-banner">
  <div class="banner">
    <div class="banner-inside noscript-warning">
      <h5>Twitter.com is loading slowly.</h5>
      <span class="warning">Hmm, this seems to be taking a while. If problems persist, <a href="javascript:window.location.reload(true);">please reload</a> to try again.</span>
    </div>
  </div>
</div>

        </div>
        <div id="top-bar-outer">
          <div id="top-bar-bg"></div>
          <div id="top-bar">
            <div class="top-bar-inside">
              <div class="static-links">
  <div id="logo">
    <a href="/">Twitter</a>
  </div>
  <form id="search-form" class="js-search-form" action="/search" method="GET">
    <span class="glass js-search-action"><i></i></span>
    <input value="" placeholder="Search" name="q" id="search-query" type="text" />
  </form>
  <div id="global-nav">
    <ul id="global-actions">
      
    </ul>
  </div>
  <div id="sections"></div>
</div>
<div class="active-links">
  
  
    <div id="session" class="js-session">
      <a id="signin-link" href="/login">
        <em>Have an account?</em>
        <strong>Sign in</strong><i></i>
      </a>
      <a id="signup-link" href="https://twitter.com/signup?context=login">
        <em>New to Twitter?</em>
        <strong>Join Today&#32;&raquo;</strong>
      </a>
      <div id="signin-dropdown" class="dropdown dark">
        <form action="https://twitter.com/sessions?phx=1" class="signin" method="post">
  <fieldset class="textbox">
  <label class="username js-username">
    <span>Username or email</span>
    <input class="js-username-field" type="text" value="" name="session[username_or_email]" autocomplete="on" />
  </label>
  <label class="password">
    <span>Password</span>
    <input class="js-password-field" type="password" value="" name="session[password]" />
  </label>
</fieldset>

  <fieldset class="subchck">
  <label class="remember">
    <input type="checkbox" value="1" name="remember_me" />
    <span>Remember me</span>
  </label>
  <button type="submit" class="submit button">Sign in</button>
</fieldset>

<input type="hidden" name="scribe_log" />
<input type="hidden" name="redirect_after_login" value="" />

  <div class="divider"></div>
  <p>
    <a class="forgot" href="/account/resend_password">Forgot password?</a><br />
    <a class="mobile" href="/account/complete">Already using Twitter via SMS?</a>
  </p>
</form>
      </div>
    </div>
  
</div>

            </div>
          </div>
          <div id="message-drawer"></div>
        </div>
      </div>

      
      <div id="page-outer" >
        
          
            <div id="front-container" class="js-front-container">
              <div class="leftside">
  <h1>Twitter</h1>
  <h2>Follow your interests</h2>
  <p>Instant updates from your friends, industry experts, favorite celebrities, and what&#8217;s happening around the world.</p>
</div>


  <noscript>
    <div class="warning">
      <strong>Twitter.com makes heavy use of JavaScript.</strong>
      <em>If you cannot enable it in your browser's preferences, you may have a better experience on our <a href="http://m.twitter.com">mobile site</a>.</em>
    </div>
  </noscript>


<div class="rightside">

  <div class="front-signin js-front-signin">
    <form action="https://twitter.com/sessions?phx=1" class="signin" method="post">
      <fieldset class="textbox">
        <div class="holding username">
          <input type="text" name="session[username_or_email]" title="Username or email" autocomplete="on" />
          <span class="holder">Username</span>
        </div>
        <div class="holding password">
          <input type="password" name="session[password]" title="Password" />
          <span class="holder">Password</span>
        </div>
      </fieldset>
      <fieldset class="subchck">
  <label class="remember">
    <input type="checkbox" value="1" name="remember_me" />
    <span>Remember me</span>
  </label>
  <button type="submit" class="submit button">Sign in</button>
</fieldset>

<input type="hidden" name="scribe_log" />
<input type="hidden" name="redirect_after_login" value="" />

      <p>
        <a class="forgot" href="/account/resend_password">Forgot it?</a>
      </p>
    </form>
  </div>


  <div class="front-signup js-front-signup">
    <h3>New to Twitter? <em>Join today!</em></h3>
    <form action="https://twitter.com/signup" class="signup signup-btn" method="post">
  <div class="holding name">
    <input type="text" autocomplete="off" value="" name="user[name]" maxlength="20"/>
    <span class="holder">Full name</span>
  </div>
  <div class="holding email">
    <input type="text" autocomplete="off" value="" name="user[email]"/>
    <span class="holder">Email</span>
  </div>
  <div class="holding password">
    <input type="password" value="" name="user[user_password]"/>
    <span class="holder">Password</span>
  </div>
  
  <input type="hidden" value="front" name="context" />
  <input type="submit" class="promotional submit button" value="Sign up" />
  
  
</form>
  </div>
</div>

<div class="bottompart">
  <div class="footer inline-list">
  <ul>
    <li><a href="/about">About</a><span class="dot divider"> &middot;</span></li>
    <li><a href="//support.twitter.com">Help</a><span class="dot divider"> &middot;</span></li>
    <li><a href="http://blog.twitter.com">Blog</a><span class="dot divider"> &middot;</span></li>

    
      <li><a href="/download">Mobile</a><span class="dot divider"> &middot;</span></li>
    

    <li><a href="http://status.twitter.com">Status</a><span class="dot divider"> &middot;</span></li>

    <li><a href="/jobs">Jobs</a><span class="dot divider"> &middot;</span></li>
    <li><a href="/tos">Terms</a><span class="dot divider"> &middot;</span></li>
    <li><a href="/privacy">Privacy</a><span class="dot divider"> &middot;</span></li>

    

    <li><a href="//business.twitter.com/advertise/start">Advertisers</a><span class="dot divider"> &middot;</span></li>
    <li><a href="//business.twitter.com/">Businesses</a><span class="dot divider"> &middot;</span></li>
    <li><a href="http://media.twitter.com">Media</a><span class="dot divider"> &middot;</span></li>
    <li><a href="//dev.twitter.com">Developers</a><span class="dot divider"> &middot;</span></li>
    <li><a href="/about/resources">Resources</a><span class="dot divider"> &middot;</span></li>
    <li><span class="copyright">&copy; 2011 Twitter</span></li>
  </ul>
  
</div>

</div>

            </div>
          
        

        <div id="page-container" class="page-container home-container">
          <div id="page-node-home">
            
              
            

            

            

            
          </div>
        </div>
      </div>

      
      
        
          <div class="homepage-gradient"></div>
          <div class="homepage-gold-bar"></div>
        
      

      <div id="message-notifications"></div>
    </div>

    <div id="flash-message-storage" style="display:none"></div>
    <div id="flash-object-container"></div>

    <div id="off-screen-preload">
      <div class="content-fe-sprites"></div>
    </div>

    

    

<script type="text/javascript">WATCH('loadrunner', function() {
    (function(context,document){var useInteractive=context.attachEvent&&!context.opera,scripts=document.getElementsByTagName("script"),uuid=0,scriptTag,scriptTemplate=document.createElement("script"),scriptsInProgress={},modulesInProgress={},loadedModule,currentScript,activeScripts={},oldUsing=context.using,oldProvide=context.provide,oldDefine=context.define,oldLoadrunner=context.loadrunner,pausedScripts={};for(var i=0,s;s=scripts[i];i++){if(s.src.match(/loadrunner\.js(\?|#|$)/)){scriptTag=s;break}}function aug(target){for(var i=1,o;o=arguments[i];i++){for(var key in o){target[key]=o[key]}}return target}function makeArray(o){return Array.prototype.slice.call(o)}var isArray=Array.isArray||function(obj){return obj.constructor==Array};function indexOf(arr,thing){for(var i=0,item;item=arr[i];i++){if(thing==item){return i}}return -1}function path(){var parts=makeArray(arguments),normalized=[];for(var i=0,len=parts.length;i<len;i++){if(parts[i].length>0){normalized.push(parts[i].replace(/\/$/,""))}}return normalized.join("/")}function pushObjPath(obj,path,newobj){var names=path.split("/"),cursor=obj;while(names.length>1){var name=names.shift();cursor=cursor[name]=cursor[name]||{}}cursor[names[0]]=newobj}function Dependency(){}Dependency.prototype.then=function(cb){var dep=this;if(!this.started){this.started=true;this.start()}if(this.completed){cb.apply(context,this.results)}else{this.callbacks=this.callbacks||[];this.callbacks.push(cb)}return this};Dependency.prototype.start=function(){};Dependency.prototype.complete=function(){if(!this.completed){this.results=makeArray(arguments);this.completed=true;if(this.callbacks){for(var i=0,cb;cb=this.callbacks[i];i++){cb.apply(context,this.results)}}}};function Script(path,force){if(path){this.id=this.path=this.resolvePath(path)}this.force=!!force}Script.loaded=[];Script.times={};Script.prototype=new Dependency;Script.prototype.resolvePath=function(path){return whichBundle(path)};Script.prototype.start=function(){var me=this,dep,module;if(module=modulesInProgress[this.id]){module.then(function(){me.complete()});return this}if(dep=scriptsInProgress[this.id]){dep.then(function(){me.loaded()})}else{if(!this.force&&indexOf(Script.loaded,this.id)>-1){this.loaded()}else{this.load()}}return this};Script.prototype.createScriptTag=function(){var me=this,paused;scriptsInProgress[this.id]=me;if(paused=pausedScripts[this.path]){me.then(function(){for(var i=0,d;d=paused[i];i++){d.complete.apply(d,arguments)}})}this.times={start:new Date()};var script=scriptTemplate.cloneNode(false);this.scriptId=script.id="LR"+ ++uuid;script.type="text/javascript";script.async=true;script.onerror=function(){throw new Error(me.path+" not loaded")};script.onreadystatechange=script.onload=function(e){e=context.event||e;if(e.type=="load"||indexOf(["loaded","complete"],this.readyState)>-1){this.onreadystatechange=null;me.loaded()}};script.src=this.path;currentScript=this;scripts[0].parentNode.insertBefore(script,scripts[0]);currentScript=null;activeScripts[script.id]=this};Script.prototype.queueScript=function(){pausedScripts[this.path]=pausedScripts[this.path]||[];pausedScripts[this.path].push(this)};Script.prototype.load=function(force){if(using.autoLoad||force){this.createScriptTag()}else{this.queueScript()}return this};Script.prototype.loaded=function(){this.complete()};Script.prototype.complete=function(){if(indexOf(Script.loaded,this.id)==-1){Script.loaded.push(this.id)}if(this.times){Script.times[this.id]=aug(this.times,{end:new Date()})}delete scriptsInProgress[this.id];Dependency.prototype.complete.apply(this,arguments)};function Module(id,body){this.id=id;this.body=body;if(typeof body=="undefined"){this.path=this.resolvePath(id)}}Module.exports={};Module.prototype=new Script;Module.prototype.resolvePath=function(id){return(whichBundle(id)!=id)?whichBundle(id):path(using.path,id+".js")};Module.prototype.start=function(){var exports,module,me=this,oldCurrent;if(this.body){this.execute()}else{if(exports=Module.exports[this.id]){this.exp(exports)}else{if(module=modulesInProgress[this.id]){module.then(function(exports){me.exp(exports)})}else{modulesInProgress[this.id]=this;this.load()}}}};Module.prototype.loaded=function(){var module,exports,me=this;if(!useInteractive){module=loadedModule;loadedModule=null;module.id=module.id||this.id;module.then(function(exports){me.exp(exports)})}else{if(exports=Module.exports[this.id]){this.exp(exports)}else{if(module=modulesInProgress[this.id]){module.then(function(exports){me.exp(exports)})}}}};Module.prototype.complete=function(){delete modulesInProgress[this.id];Script.prototype.complete.apply(this,arguments)};Module.prototype.execute=function(){var me=this;if(typeof this.body=="object"){this.exp(this.body)}else{if(typeof this.body=="function"){this.body.apply(window,[function(exports){me.exp(exports)}])}}};Module.prototype.exp=function(exports){if(this.times){aug(this.times,{eval:new Date()})}this.complete(this.exports=Module.exports[this.id]=exports||{})};function flattenDeps(deps){var flat=[];for(var i=0,d;d=deps[i];i++){if(d instanceof Sequence){flat=flat.concat(flattenDeps(d.deps))}else{if(d instanceof Module){flat.push(d)}}}return flat}function Collection(deps){this.deps=deps;if(this.deps.length==0){this.complete()}}Collection.prototype=new Dependency;Collection.prototype.start=function(){var me=this;function depComplete(){var results=[];for(var i=0,d;d=me.deps[i];i++){if(!d.completed){return }if(d.results.length>0){results=results.concat(d.results)}}me.complete.apply(me,results)}for(var i=0,d;d=this.deps[i];i++){d.then(depComplete)}return this};Collection.prototype.load=function(){for(var i=0,d;d=this.deps[i];i++){if(d.load){d.load(true)}}return this};Collection.prototype.as=function(cb){var me=this;return this.then(function(){var flatDeps=flattenDeps(me.deps),obj={};for(var i=0,d;d=flatDeps[i];i++){pushObjPath(obj,d.id,arguments[i])}cb.apply(this,[obj].concat(makeArray(arguments)))})};function Sequence(deps){this.deps=deps}Sequence.prototype=new Dependency;Sequence.prototype.start=function(){var me=this,nextDep=0,allResults=[];(function next(){var dep=me.deps[nextDep++];if(dep){dep.then(function(results){if(dep.results.length>0){allResults=allResults.concat(dep.results)}next()})}else{me.complete.apply(me,allResults)}}());return this};Sequence.prototype.load=function(){var me=this,nextDep=0;(function next(){var dep=me.deps[nextDep++];if(dep&&dep.load){dep.load(true).then(function(){next()})}}());return this};function interactiveScript(){for(var i in scripts){if(scripts[i].readyState=="interactive"){return activeScripts[scripts[i].id]}}}function defineModule(name,body){var module;if(!name&&useInteractive){module=currentScript||interactiveScript()}if(module){delete activeScripts[module.scriptId];module.body=body;module.execute()}else{loadedModule=module=new Module(name,body);modulesInProgress[module.id]=module}return module}function provide(){var args=makeArray(arguments),name,body;if(typeof args[0]=="string"){name=args.shift()}body=args.shift();return defineModule(name,body)}function amdResolve(id,mod){var from=mod.id||"";var parts=from.split("/");parts.pop();var dir=parts.join("/");return id.replace(/^\./,dir)}function amdMap(args,mod){var mapped=[];function require(id){return Module.exports[amdResolve(id,mod)]}for(var i=0,len=args.length;i<len;i++){if(args[i]=="require"){mapped.push(require);continue}if(args[i]=="exports"){mod.exports=mod.exports||{};mapped.push(mod.exports);continue}mapped.push(require(args[i]))}return mapped}function amdDefine(){var args=makeArray(arguments),dependencies=[],id,factory;if(typeof args[0]=="string"){id=args.shift()}if(isArray(args[0])){dependencies=args.shift()}factory=args.shift();var mod=defineModule(id,function(exports){var mods=[];function executeAMD(){var args=amdMap(makeArray(dependencies),mod),exported;if(typeof factory=="function"){exported=factory.apply(mod,args)}else{exported=factory}if(typeof exported=="undefined"){exported=mod.exports}exports(exported)}for(var i=0,len=dependencies.length;i<len;i++){var d=dependencies[i];if(indexOf(["require","exports"],d)==-1){mods.push(amdResolve(d,mod))}}if(mods.length>0){using.apply(this,mods.concat(executeAMD))}else{executeAMD()}});return mod}amdDefine.amd={};function using(){var deps=makeArray(arguments),callback;if(typeof deps[deps.length-1]=="function"){callback=deps.pop()}var combi=new Collection(mapDependencies(deps));if(callback){combi.then(callback)}return combi}function mapDependencies(deps){var mapped=[];for(var i=0,dep;dep=deps[i];i++){if(typeof dep=="string"){dep=createDependency(dep)}if(isArray(dep)){dep=new Sequence(mapDependencies(dep))}mapped.push(dep)}return mapped}function createDependency(id){var m,dep;for(var i=0,matcher;matcher=using.matchers[i];i++){var regex=matcher[0],factory=matcher[1];if(m=id.match(regex)){return factory(id)}}throw new Error(id+" was not recognised by loader")}var loadrunner=function(f){return f(using,provide,loadrunner,amdDefine)};function noConflict(){context.using=oldUsing;context.provide=oldProvide;context.define=oldDefine;context.loadrunner=oldLoadrunner;return loadrunner}loadrunner.Script=Script;loadrunner.Module=Module;loadrunner.Collection=Collection;loadrunner.Sequence=Sequence;loadrunner.Dependency=Dependency;loadrunner.noConflict=noConflict;context.loadrunner=loadrunner;context.using=using;context.provide=provide;context.define=amdDefine;using.path="";using.autoLoad=true;using.bundles=[];var whichBundleMemo={};function whichBundle(id){if(typeof whichBundleMemo[id]!="undefined"){return whichBundleMemo[id]}for(var manifestId=0;manifestId<using.bundles.length;manifestId++){for(var bundleId in using.bundles[manifestId]){if(bundleId!=id&&indexOf(using.bundles[manifestId][bundleId],id)>-1){whichBundleMemo[id]=bundleId;return bundleId}}}whichBundleMemo[id]=id;return id}using.matchers=[];using.matchers.add=function(regex,factory){this.unshift([regex,factory])};using.matchers.add(/(^script!|\.js$)/,function(path){var script=new Script(path.replace(/^\$/,using.path.replace(/\/$/,"")+"/").replace(/^script!/,""),false);script.id=path;return script});using.matchers.add(/^[a-zA-Z0-9_\-\/]+$/,function(id){return new Module(id)});if(scriptTag){using.path=scriptTag.getAttribute("data-path")||scriptTag.src.split(/loadrunner\.js/)[0]||"";if(main=scriptTag.getAttribute("data-main")){using.apply(context,main.split(/\s*,\s*/)).then(function(){})}}}(this,document));
    loadrunner(function(D,C,B,E){function A(F){this.id=this.path=F}A.inProgress=[];A.done=[];A.prototype=new B.Dependency;A.prototype.start=function(){var F=this,G;if(G=A.done[this.id]){this.complete(G.result)}else{if(G=A.inProgress[this.id]){G.then(function(){F.complete(G.result)})}else{A.inProgress[this.id]=this;this.load()}}};A.prototype.load=function(){var H,F=this;if(window.XMLHttpRequest){H=new window.XMLHttpRequest()}else{try{H=new window.ActiveXObject("Microsoft.XMLHTTP")}catch(G){return new Error("XHR not found.")}}H.onreadystatechange=function(){if(H.readyState==4){F.result=H.responseText;A.done[F.id]=F;delete A.inProgress[F.id];F.complete(F.result)}};H.open("GET",this.path,true);H.send(null)};D.matchers.add(/^json!/,function(F){return new A(F.substring(5))})});
    loadrunner(function(D,C,B,E){function A(F){this.id=this.path=F}A.inProgress=[];A.done=[];A.prototype=new B.Dependency;A.prototype.start=function(){var F=this,G;if(G=A.done[this.id]){this.complete(G.result)}else{if(G=A.inProgress[this.id]){G.then(function(){F.complete(G.result)})}else{A.inProgress[this.id]=this;this.load()}}};A.prototype.load=function(){var F=this;D("lib/lazyload",function(G){if($("link[href='"+F.path+"']").length>0){H()}else{G.css(F.path,H)}function H(){A.done[F.id]=F;delete A.inProgress[F.id];F.complete()}})};D.matchers.add(/^css!/,function(F){return new A(F.replace(/^css!/,"").replace(/^\//,(D.cssPath||"").replace(/\/$/,"")+"/"))})});
    loadrunner(function(F,E,A,G){function B(H,I){for(var J=0,K;K=H[J];J++){if(I==K){return J}}return -1}function D(I){var H;if(I.charAt(0)==">"){I=I.substring(1)}if(H=C.inProgress[I]){H.complete();delete C.inProgress[I]}C.done.push(I)}var C=function(H){this.id=H};C.inProgress=[];C.done=[];C.prototype=new A.Dependency;C.prototype.start=function(){var I,H=this;if(B(C.done,this.id)!=-1){this.complete()}else{if(I=C.inProgress[this.id]){I.then(function(){H.complete()})}else{C.inProgress[this.id]=this}}};F.matchers.add(/^>/,function(H){return new C(H.substring(1))});window.signal=D});
});</script><script>WATCH.end('loadrunner');</script>



  
    <script type="text/javascript">WATCH('javascript_logged_out', function() {
      function miniScribe(eName,more,cat){
var log=[],cat=cat||'client_event',more=more||{};more.event_name=eName;for(var k in more){log.push('"'+k+'":"'+more[k]+'"');};
(new Image()).src='//scribe.twitter.com/scribe?category='+encodeURIComponent(cat)+'&log='+encodeURIComponent('{'+log.join(',')+'}')+'&ts='+(+new Date);
}
      (function(){function C(M,L){var K=M.tagName?M:document.getElementById(M);return L?K.getElementsByTagName(L):K}function J(P,O,N){for(var L=P.length-1;L>=0;L--){var M=P[L].className,K=M&&M.match(O);if(K){N.call(P[L],K[1])}}}function I(K,L){return K.className=K.className.replace(" "+L,"")}function F(K,L){return K.className=I(K,L)+" "+L}var D=document.body,H=document.getElementById("doc"),B;if(!location.href.match(/#!\/./)){I(D,"user-style-twttr loading-body");F(D,"front-page");miniScribe("web:front:::impression",{context:"front"});window._scribedFrontImpression=true}else{if(B=location.href.match(/#!?\/(login|download)(\/|$)/)){F(H,"route-"+B[1])}}var G=C(H,"div"),E="hasome";J(G,/holding/,function(){var M=this,K=C(M,"input")[0],L=C(M,"span")[0];if(K&&L){L.onclick=function(){K.focus()};K.onblur=function(){if(!K.value.length){I(M,E)}};K.onkeydown=function(N){setTimeout(function(){if((N&&N.keyCode===8)||K.value.length){F(M,E)}else{I(M,E)}},0)}}});window.setInterval(function(){J(G,/holding/,function(){var K=C(this,"input")[0];if(K&&K.value.length){F(this,E)}})},1111);var A={signin:"web:front:login_callout:form:login_click",signup:"web:front:signup_callout:form:signup_click",search:"web:front:main:search_field:search",language:"web:front:footer:language_selector:select"};J(G,/js-front-(signin|signup|search|language)/,function(L){var M=C(this,"form"),K=A[L];if(M&&M[0]){M[0].onsubmit=function(){if(!C(H).className.match("route-front")){miniScribe(K)}}}})}());
    });</script>
    <script type="text/javascript">WATCH.end('javascript_logged_out');</script>
  




<script>WATCH('boot', function() {
  using.cssPath = 'http://a3.twimg.com/a/1322681100/';
  using.path = 'http://a1.twimg.com/a/1322681100/phoenix/js';
  using.autoLoad = false;

  // Load bluejs modules from their own modpath, in /bluejs
  using.matchers.add(/^bluejs/, function(id) {
    var mod = new loadrunner.Module(id);
    mod.path = '/' + id + '.js';
    return mod;
  });

  

  provide("boot/init",function(C){var A={add:function(J,K){if(!K){K=new Date()}twttr.bootTimings.data.push({name:J,timestamp:K})},data:[],done:function(){twttr.bootTimings.add=twttr.bootTimings.done=$.noop;$.each(loadrunner.Script.times,function(J,K){$.each(K,function(L,M){twttr.bootTimings.data.push({name:["bundle",J,L].join(" "),timestamp:M})})});twttr.Profiler.logDataSet("Boot",twttr.appStartTime,twttr.bootTimings.data);twttr.bootTimings=null}};function G(K){for(var J in K){if(K.hasOwnProperty(J)){twttr[J]=K[J]}}}function H(L){twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data process start");G(L.twttr);signal(">payload");if(L.boomr){using(L.boomr).load().then(function(){delete BOOMR.plugins.RT;BOOMR.init({allow_ssl:true,autorun:false,user_ip:L.remoteIP,BW:{base_url:twttr.hosts.local+"/images/boomerang/"}});using(">setupComplete","util").as(function(M){BOOMR.page_ready();BOOMR.subscribe("before_beacon",function(Q){if(!Q.bw){return }var O=parseInt(Q.bw/1024,10);var P=parseInt((Q.bw_err*100)/Q.bw,10);var N=parseInt((Q.lat_err*100)/Q.lat,10);scribble("measurement",{load_time_ms:Q.t_done,bandwidth_kbytes:O,bandwidth_error_percent:P,latency_ms:Q.lat,latency_error_percent:N,product:"webclient"},"boomerang");if(M.util.params()["boomr"]){twttr.showMessage("Bandwidth: "+M.util.addCommas(O)+" KB/s &plusmn; "+P+"%<br />Latency: "+Q.lat+" ms &plusmn; "+Q.lat_err,true)}})})})}if(L.countryCode){twttr.countryCode=L.countryCode}if(L.countries){twttr.countries=L.countries;if(twttr.countryCode){for(var K=0,J=twttr.countries.length;K<J;K++){if(twttr.countries[K].code==twttr.countryCode){twttr.countries[K].selected=true}}}}if(L.pageLocaleJS){twttr.bootTimings&&twttr.bootTimings.add("i18n fetch start");using(L.pageLocaleJS).load().then(function(){twttr.bootTimings&&twttr.bootTimings.add("i18n fetch finish");signal(">languageData")})}else{signal(">languageData")}using(">defaultViews",twttr.bundleMore,function(){if(L.showWelcomeBanner){(new twttr.views.WelcomeToPhoenixBanner()).render($("#banners"),"append")}if(L.flashNotice){twttr.showMessage(L.flashNotice,true)}});using(">decider",function(){twttr.decider._updateFeatures(L.deciderFeatures,true)});using(">ab_decider",function(){twttr.abdecider._updateExperiments(L.abBuckets,true)});using(">api_ready",function(){twttr.API.setConfig({postAuthenticityToken:L.postAuthenticityToken});$("input.authenticity_token").val(L.postAuthenticityToken);var P=L.requestCacheSeedData;for(var N=0,M=P.length;N<M;++N){var O=P[N];twttr.API._requestCache.inject(O.api_request_name,O.options,O.json,1)}signal(">request_cache_seeded");if(L.homeTimelineFetchSize){twttr.API.homeTimelineFetchSize=L.homeTimelineFetchSize}});twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data process finish")}function D(){if(twttr.loggedIn){twttr.bootTimings&&twttr.bootTimings.add("initCurrentUser start");using("boot/bootstrap_data",">request_cache_seeded",function(J){twttr.API.User.current({error:function(){window.location.reload(true)},success:function(K){twttr.currentUser=K;for(var L in J.userProperties){twttr.currentUser.sync(L,J.userProperties[L]||false)}twttr.bootTimings&&twttr.bootTimings.add("initCurrentUser finish");signal(">allCurrentUserDataLoaded")}})})}else{signal(">allCurrentUserDataLoaded")}}function F(J){var K=new Date();using(J).load().then(function(){var L=new Date();using("boot/bootstrap_data",function(){twttr.Profiler.logPreviousEvent("twttr.bundles fetched",K,L)})})}function E(O){var K=false;function J(){if(!K){setTimeout(function(){twttr.keynoteTTFTPing();K=true;O()},0)}}function N(){setTimeout(J,0)}var L=document.getElementById("stream-items-id");if(!L){O();return }if(L.clientHeight>0){N();return }function M(){L.onresize=null;N()}L.onresize=M}function I(K){for(var J in K){return false}return true}function B(N){if(!N){return }var K=document.getElementById("slow-load-banner");if(!K){return }var J;function M(){clearTimeout(J);$(K).remove();twttr.app.recalculatePadding()}function L(){K.style.display="block";setTimeout(function(){K.style.height="60px"})}J=setTimeout(L,N);twttr.bundleCore&&using(twttr.bundleCore,M)}C({init:function(L){if(L.renderedOnServer){var J=document.getElementsByTagName("html")[0];var P=J.className.match(/highlight-global-nav-([a-z]+)/);if(L.twttr.loggedIn&&P){var K="global-nav-"+P[1];document.getElementById(K).className+=" active"}else{if(J.className.match(/remove-prerendered-content/)){document.getElementById("page-outer").className=document.getElementById("page-outer").className.replace("flush-to-top","");var N=document.getElementById("page-container");N.className=N.className.replace("home-container","");N.innerHTML="";signal(">wokeUp");L.renderedOnServer=false}}J.className=J.className.replace("use-prerendered-content","").replace("remove-prerendered-content","");if(J.getAttribute("data-nav-highlight-class-name")){J.className=J.className.replace(J.getAttribute("data-nav-highlight-class-name"),"");J.removeAttribute("data-nav-highlight-class-name")}}if(L.disablePhoenix){B(L.loadTimeoutInterval);return }G(L.twttr);twttr.appStartTime=document.startTime;twttr.geo=twttr.geo||{};twttr.session=twttr.session||{};twttr.session.impressionId=twttr.appStartTime+Math.random();twttr.isLocalhost=location.hostname.match(/localhost\.twitter\.com/);if(twttr.allScribeEvents){try{twttr.allScribeEvents=JSON.parse(localStorage.twttrAllScribeEvents)||[]}catch(O){twttr.allScribeEvents=[]}}twttr.bootTimings=L.profiling?A:null;for(var M=0;M<L.loadrunnerAssets.length;M++){using.bundles.push(L.loadrunnerAssets[M])}if(L.loadrunnerAssets.length==1&&I(L.loadrunnerAssets[0])){using.autoLoad=true}B(L.loadTimeoutInterval);twttr.proto=window.location.protocol.replace(":","");twttr.isSSL=function(){return twttr.proto==="https"};twttr.createIframe=function(R,Q){var U=document.createElement("div");U.innerHTML='<iframe tabindex="-1" role="presentation" style="position:absolute;top:-9999px;" src="'+R+'"></iframe>';var S=U.firstChild;var T=function(){Q.apply(S,arguments)};S.addEventListener?S.addEventListener("load",T,false):S.attachEvent("onload",T);document.body.insertBefore(S,document.body.firstChild);return S};if(!L.inline_bootstrap_data){provide("boot/bootstrap_data",function(Q){var R=[];R.push("json!/account/bootstrap_data"+window.location.search+(window.location.search?"&":"?")+"r="+Math.random());if(typeof JSON==="undefined"){R.push(twttr.bundleCore)}twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data fetch start");using(R,function(T){twttr.bootTimings&&twttr.bootTimings.add("bootstrap_data fetch finish");var S=JSON.parse(T);Q(S)})})}F(L.assets);using(twttr.bundleCore,function(){twttr.anywhere.remote={};using("bluejs/api",function(Q){twttr.API=Q;twttr.API.setConfig({cacheObjects:true,includeEntities:true});twttr.extendAPI();signal(">api_ready");using(">request_cache_seeded",function(){D()})})});using(L.setupDependencies,function(){twttr.bootTimings&&twttr.bootTimings.add("setup start");jQuery.ready();twttr.setup(L.renderedOnServer);trackClient({component:"boot_js",action:"debug"},{message:"after_setup"});twttr.bootTimings&&twttr.bootTimings.add("setup finish");signal(">setupComplete");trackClient({component:"boot_js",action:"debug"},{message:"setup_complete"});var Q=function(){trackClient({component:"more_bundle",action:"debug"},{message:"bundle_requested"});using(twttr.bundleMore).load()};if(!twttr.isT1&&$.browser.msie&&(parseInt($.browser.version,10)<=8)){E(Q)}else{Q()}});using(twttr.bundleMore,function(){trackClient({component:"more_bundle",action:"debug"},{message:"bundle_loaded"});signal(">allCodeLoaded")});using("boot/bootstrap_data",H);twttr.createIframe(L.pReceiverURL,function(){var Q=this;using(twttr.bundleCore,function(){twttr.anywhere.remote.server=Q;twttr.anywhere.api.util.RemoteRequest.flush()})})}})});
  using('boot/init', function(boot) {
    var data = {"twttr":{"placeDataPrefix":"http:\/\/geo.l3.twitter.com\/places\/autocomplete_places-","hosts":{"local":"http:\/\/twitter.com","upload":"http:\/\/upload.twitter.com","remote":"http:\/\/api.twitter.com"},"remoteIP":"107.5.155.87","bundleCore":"bundle\/phoenix-core","requestFullCity":"us,mi,grand_rapids","loggedIn":false,"expando":false,"twtPath":"http:\/\/a2.twimg.com\/a\/1322681100\/javascripts\/twt.js","isT1":false,"bundleMore":"bundle\/phoenix-more","domains":{"local":"twitter.com","upload":"upload.twitter.com","remote":"api.twitter.com"}},"sandboxes":{"jsonp":"http:\/\/a3.twimg.com\/a\/1322681100\/jsonp_sandbox.html","detailsPaneContent":"http:\/\/a0.twimg.com\/a\/1322681100\/details_pane_content_sandbox.html"},"loadrunnerAssets":[{"http:\/\/a3.twimg.com\/b\/1\/bundle\/phoenix-more-en-201111301132.js":["bundle\/phoenix-more"],"http:\/\/a0.twimg.com\/b\/1\/bundle\/ie6-en-201111301132.js":["bundle\/ie6"],"http:\/\/a3.twimg.com\/b\/1\/bundle\/sandbox-en-201111301132.js":["bundle\/sandbox"],"http:\/\/a1.twimg.com\/b\/1\/bundle\/phoenix-core-en-201111301132.js":["bundle\/phoenix-core"],"http:\/\/a2.twimg.com\/b\/1\/bundle\/signup-en-201111301132.js":["bundle\/signup"]}],"assets":["bundle\/phoenix-core"],"pReceiverURL":"http:\/\/api.twitter.com\/receiver.html","disablePhoenix":false,"inline_bootstrap_data":false,"loadTimeoutInterval":10000,"setupDependencies":["\u003EallCurrentUserDataLoaded","\u003Erequest_cache_seeded","bundle\/phoenix-core","\u003ElanguageData"],"profiling":false,"renderedOnServer":true};
    boot.init(data);
  });
});</script><script>WATCH.end('boot');</script>



<!--[if lte IE 6]>
  <script>using('bundle/ie6').load();</script>
<![endif]-->


    
      
    
  </body>


</html>
